A Logic for Information Flow Analysis of Pointer Programs
نویسندگان
چکیده
This paper specifies a nontermination-insensitive, interprocedural, information flow analysis for objectoriented programs via a Hoare-like logic. Pointer aliasing is ubiquitous in such programs, and can potentially leak confidential information. Therefore, assertions in the logic not only describe the noninterference property that formalizes confidentiality, but also describe aliasing properties. The representation of noninterference in assertions makes explicit the independences between variables and addresses. The logic is flow-sensitive and can deem secure more programs than extant type-based information flow analyses. Modular (or local) reasoning is a critical component of the logic. Apart from supporting interprocedural reasoning in a modular way, the logic also supports local reasoning about state in the style of Separation Logic. “Small” specifications are used; they mention only the variables and addresses relevant to a command. Specifications are combined using a frame rule that is sound in the logic. An algorithm for the computation of postconditions is described: under certain assumptions, there exists a strongest postcondition which the algorithm computes. The core language permits programmer assertions, in the style of ESC/Java, thereby providing a more fine-grained information flow analysis. The logic can thus be viewed as a modular, interprocedural static checker for confidentiality.
منابع مشابه
Analyzing Millions of Lines of Code with Sparse Flow-Sensitive Pointer Analysis
Many program analyses perform better and produce more precise results when they are given precise pointer information. One dimension of precision is flow-sensitive pointer analysis (i.e., an analysis that respects a program’s control-flow), which has been shown to be useful for important applications such as program verification and understanding, among others. However, this type of pointer ana...
متن کاملProgramming With Information Flow-Control
We informally introduce here the information flow-control domain. We then present two theoretical layouts for developping programming language with information flow-control. The approach is semantic-based and allows programs to be statically type-checked. We then consider its practical use, through the so-called Paragon language, extending Java in a user-friendly way. We’ll be especially inters...
متن کاملInstance keys: A technique for sharpening whole-program pointer analyses with intraprocedural information
Pointer analyses enable many subsequent program analyses and transformations, since they enable compilers to statically disambiguate references to the heap. Extra precision enables pointer analysis clients to draw stronger conclusions about programs. Flow-sensitive pointer analyses are typically quite precise. Unfortunately, flow-sensitive pointer analyses are also often too expensive to run on...
متن کاملBoomerang: Demand-Driven Flow- and Context-Sensitive Pointer Analysis for Java
Many current program analyses require highly precise pointer information about small, targeted parts of a given program. This motivates the need for demand-driven pointer analyses that compute information only where required. Pointer analyses generally compute points-to sets of program variables or answer boolean alias queries. However, many client analyses require richer pointer information. F...
متن کاملA Shape System and Loop Invariant Inference
Pointer programs remain a major challenge for program analysis and verification. Shape analysis can discover the shape invariants of data structures in the heap and detect errors about manipulating pointers in a program. This paper presents a shape analysis for linked list programs based on a new shape graph representation. Our shape graphs could describe unbounded data structures without loss ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2005